home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Libris Britannia 4
/
science library(b).zip
/
science library(b)
/
PROGRAMM
/
BASIC
/
0007.ZIP
/
SH.BAS
< prev
next >
Wrap
BASIC Source File
|
1984-01-10
|
3KB
|
96 lines
1000 ' " SH.BAS " 11-26-83
1010 '
1020 ' IBM/PC DOS 1.1
1030 ' Original code by Howard Glosser
1040 ' Modified by Mike Lewis
1050 ' See Softalk - November 1983 (pages 77-85)
1060 '
1070 ' Screen handler demonstration
1080 ' Restore screens from BASIC using assembler routine SH.COM
1090 '
1100 '
1110 COLOR 7,0:CLS:KEY OFF
1120 FOR I=1 TO 10:KEY I,"":NEXT I
1130 DEF SEG:SUBRT$=STRING$(66,32)
1140 SUBLC%=VARPTR(SUBRT$)
1150 GOSUB 1620:BLOAD "sh.com",SCRN
1160 DIM STRSCRN1%(2000),STRSCRN2%(2000)
1170 STORE%=1:RESTR%=2
1180 '
1190 ' build screen 1
1200 FOR I=1 TO 10: FOR J=1 TO 71 STEP 10
1210 LOCATE I,J:PRINT "screen 1 ";
1220 NEXT J:NEXT I
1230 LOCATE 12,36:PRINT "SCREEN 1"
1240 FOR I=14 TO 23:FOR J=1 TO 71 STEP 10
1250 LOCATE I,J:PRINT "screen 1 ";
1260 NEXT J:NEXT I
1270 SCRNOPT%=STORE%:GOSUB 1620
1280 CALL SCRN(SCRNOPT%,STRSCRN1%(0))
1290 CLS:LOCATE 12,32:PRINT "Screen 1 stored"
1300 SOUND 500,1:SOUND 400,1
1310 GOSUB 1810:CLS
1320 '
1330 ' build screen 2
1340 FOR I=1 TO 10: FOR J=1 TO 71 STEP 10
1350 LOCATE I,J:PRINT "screen 2 ";
1360 NEXT J:NEXT I
1370 LOCATE 12,36:PRINT "SCREEN 2"
1380 FOR I=14 TO 23:FOR J=1 TO 71 STEP 10
1390 LOCATE I,J:PRINT "screen 2 ";
1400 NEXT J:NEXT I
1410 SCRNOPT%=STORE%:GOSUB 1620
1420 CALL SCRN(SCRNOPT%,STRSCRN2%(0))
1430 CLS:LOCATE 12,32:PRINT "Screen 2 stored"
1440 SOUND 500,1:SOUND 400,1
1450 GOSUB 1810
1460 '
1470 ' input routine
1480 CLS
1490 LOCATE 8,24:PRINT "*** READY TO RESTORE SCREENS ***"
1500 LOCATE 11,30:PRINT "1. Restore screen 1"
1510 LOCATE 12,30:PRINT "2. Restore screen 2"
1520 LOCATE 13,30:PRINT "3. End the program"
1530 COLOR 0,7:LOCATE 25,28:PRINT" ENTER YOUR CHOICE (1-3) ";:COLOR 7,0
1540 X$=INKEY$:IF X$="" THEN 1540
1550 IF LEN(X$)=2 THEN 1540
1560 IF ASC(X$)<49 OR ASC(X$)>51 THEN 1540
1570 X=VAL(X$)
1580 ON X GOSUB 1660,1710,1760
1590 GOSUB 1850
1600 GOTO 1470
1610 '
1620 ' find the current location of SUBRT$
1630 SCRN=PEEK(SUBLC%+1)+PEEK(SUBLC%+2)*256
1640 RETURN
1650 '
1660 ' restore screen 1
1670 SCRNOPT%=RESTR%:GOSUB 1620
1680 CALL SCRN(SCRNOPT%,STRSCRN1%(0))
1690 RETURN
1700 '
1710 ' restore screen 2
1720 SCRNOPT%=RESTR%:GOSUB 1620
1730 CALL SCRN(SCRNOPT%,STRSCRN2%(0))
1740 RETURN
1750 '
1760 ' finished
1770 CLS
1780 LOCATE 1
1790 END
1800 '
1810 ' delay
1820 FOR I=1 TO 1500:NEXT I
1830 RETURN
1840 '
1850 ' continue
1860 COLOR 0,7
1870 LOCATE 25,27:PRINT " Press any key to continue ";
1880 COLOR 7,0
1890 X$=INKEY$:IF X$="" THEN 1890
1900 CLS
1910 RETURN
1920 '
1930 '
1940 ' end of listing